home *** CD-ROM | disk | FTP | other *** search
- Program Datetime {speak current date and time}
- {$I Speech.inc}
- type
- DateStr = string[10];
- AnyString=string[80];
- TimeString = string[8];
- VAR
- Da,Mo,Yr,Yr2,Sday,Hr,Mn,Sc:INTEGER;
- dummy:datestr;
- Nm:AnyString;
- dummy2:timestring;
-
- {Function to get date from DOS}
- function Date: DateStr;
- type
- regpack = record
- ax,bx,cx,dx,bp,si,di,ds,es,flags: integer;
- end;
-
- var
- recpack: regpack; {record for MsDos call}
- month,day: string[2];
- year: string[4];
- dx,cx: integer;
-
- begin
- with recpack do
- begin
- ax := $2a shl 8;
- end;
- MsDos(recpack); { call function }
- with recpack do
- begin
- str(cx,year); {convert to string}
- str(dx mod 256,day); { " }
- str(dx shr 8,month); { " }
- DA:=DX MOD 256; {for speech call}
- MO:=DX SHR 8; { " }
- yr:=cx; { " }
- yr2:=cx-1900; { " }
- end;
- date := month+'/'+day+'/'+year;
-
- end;
-
- {Function to get time from DOS}
- function time: TimeString;
- type
- regpack = record
- ax,bx,cx,dx,bp,si,di,ds,es,flags: integer;
- end;
-
- var
- recpack: regpack; {assign record}
- ah,al,ch,cl,dh: byte;
- hour,min,sec: string[2];
-
- begin
- ah := $2c; {initialize correct registers}
- with recpack do
- begin
- ax := ah shl 8 + al;
- end;
- intr($21,recpack); {call interrupt}
- with recpack do
- begin
- str(cx shr 8,hour); {convert to string}
- str(cx mod 256,min); { " }
- str(dx shr 8,sec); { " }
- HR:=CX SHR 8; {for speech call}
- MN:=CX MOD 256; { " }
- end;
- time := hour+':'+min+':'+sec;
- end;
-
- {procedure to determine day of week - from PC mag 4/14/87}
- procedure Zellers_Formula(var mm,dd,yy,vday:integer);
- var century, tmp:integer;
- begin
- if mm <3 then mm:=mm+10
- else mm:=mm-2;
- if mm>10 then yy:=yy-1;
- century:= yy div 100;
- yy:=yy mod 100;
- tmp:=trunc(2.6*mm-0.2)+dd+yy+(yy div 4)+(century div 4)-(2*century);
- vday:=(tmp+777) mod 7;
- end;{Zellers_Formula}
-
- begin
- dummy:=date; {Call date function}
- Zellers_Formula(mo,da,yr,sday); {get day of week}
- speech('t-oo-d-a-a ih-s '); {Call speech.inc}
- DAYSPEECH(sday+1);
- speech(' ');
- mo:=mo+2;
- MONSPEECH(MO);
- NUMdaySPEECH(DA);
- NUMSPEECH(19);
- NUMSPEECH(yr2);
-
- dummy2:=time; {Call time function}
- IF HR >=13 THEN
- NM:=' P-EE EH-M'
- ELSE
- NM:=' A-EE EH-M';
- if hr>=13 then HR:=HR-12;
- if hr=0 then hr:=12;
- if hr=0 then nm:=' A-EE EH-M';
- speech(' ih-t ih-s n-ae-w ');
- NUMSPEECH(HR);
- NUMSPEECH(MN);
- SPEECH(NM);
- clrscr;
- end.